﻿using AlgoritmoConstrutivo.entidades;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AlgoritmoConstrutivo.leitor
{
    class PonderadaFileReader
    {

        private Grafo software ;
        GerenciadorNos gerenciaNo = new GerenciadorNos();

        public PonderadaFileReader()
        {

        }

     

        public Grafo ExtractInstance( FileInfo arquivo)
        {

            GerenciadorNos.reiniciaIds();
            gerenciaNo.reiniciaGerenciadorNos();

            this.software = new Grafo();
            this.software.Ponderado = true;
            this.software.Nome = arquivo.Name;


            String bunch = null;
            using (StreamReader xtr = new StreamReader(arquivo.FullName))
            {
                while (!xtr.EndOfStream)
                {
                    bunch = xtr.ReadLine().Trim();
                    String[] s = bunch.Split(' ');

                    No modulo = this.gerenciaNo.InsertNo(s[0]);
                    software.AddNo(modulo);

                    No vizinho = null;

                    if (s.Length==1 && (s[0] == ""))
                        continue;

                    if (s.Length == 3)
                    {
                        vizinho = this.gerenciaNo.InsertNo(s[1]);
                        software.AddNo(vizinho);

                        software.AdicionaArestaDirecionadaPonderada(modulo.Id, vizinho.Id, Int32.Parse(s[2]));

                    }

                 

                }
            }



            return this.software;
        }
    }
}
